﻿/////////////////////////////////////////////////////////////////////////////////
///              ESCUELA SUPERIOR POLITECNICA DE CHIMBORAZO                   ///
///                        PROYECTO INTEGRADOR IV                            /// 
///                         PROYECTO SICOPS 2011                              /// 
/// ------------------------------------------------------------------------- ///  
///              **********GRUPO DE DESARROLLADORES**********                 ///
///                 ************PEGASO COMPANY**************                    /// 
///---------------------------------------------------------------------------///
///                                                         RIOBAMBA-ECUADOR  ///
///---------------------------------------------------------------------------///
///                         FORMULARIO DEPARTAMENTO                          ///
///---------------------------------------------------------------------------///
///Permite el registro de una nueva unidad adquisitiva                      ///
///                                           Responsable:  Sagñay Rosa     ///
/////////////////////////////////////////////////////////////////////////////////





using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using LogisticaDeAcceso;
//Formulario para el ingreso de nuevos departamentos o unidades adquisitivas
namespace Aplicacion.Formularios
{
    public partial class frmDepartamento : Form
    {

        private bool varBandera = true;//Variable permite controlar los espacios que se precione
        private string varConexion;//Variable con la direccion de coneccion, el nombre del base de datos y la cuenta de acceso

        public frmDepartamento()
        {
            InitializeComponent();
        }


        public frmDepartamento(string Con)
        {
            //Inicializacion de variables desde el exterior
            InitializeComponent();
            varConexion = Con;
        }
  
        private void btnGuardarUnidades_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("¿Desea continuar con el registro de la nueva unidad adquisitiva?", "Atencion", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                metIngreso();//Llamado al metodo de ingreso
                btnNuevoDe.Enabled = true;
                btnGuardarDe.Enabled = false;
                grpUnidadesDe.Enabled = false;
            }
        }

        private void metLimpiar()
        {

            //metodo que limpia los datos ya registrados para ingresar los nuevos
            txtNombreDE.Clear();/////////nombre del departamento
            txtRepresentanteDE.Clear();//representante
            txtTelefonoDE.Clear();///////telefono del depa
            txtUbicacionDE.Clear();//////Ubicacio de operacion del departamento
            txtUbicacionDE.Text = "Ubicación Interna ";//Registro nuevo
            metAceptar();////////////////Configuracion y validacion de ingresos
            cmbNombreCentroDE.Focus();
        }

       

        private void metIngreso()
        {
            Negocios.ComponeteNegocios auxCom = new Negocios.ComponeteNegocios();
            auxCom.metIngresoDepartamento(varConexion, txtCodigoDE.Text, metCodigoCEntro(), txtNombreDE.Text, txtRepresentanteDE.Text, txtTelefonoDE.Text, txtUbicacionDE.Text);
            //Metodo que ingresa el nuevo registro del departamento
            //del procedimiento de ingreso
        }

        private string metCodigoCEntro()
        { 
            //metodo que obtiene el codigo del centro en que se esta operando
        string Codigo=coleccionDeDatos1.vs_MostrarCentrosCostos[BindingContext[coleccionDeDatos1,"vs_MostrarCentrosCostos"].Position][0].ToString();//Opercion[0](fila)[0](Columna)Matricial
        return Codigo;
        }
        private void frmDepartamento_Load(object sender, EventArgs e)
        {
            metActualizar();
            metIniciarSesionDE();//Metodo para que inicie la secion con los departamentos registrados
            btnGuardarDe.Enabled = false;
            btnNuevoDe.Enabled = false;
            metGenerarClave();//Llamdo al metodo dque genera claves
        }

        private void metGenerarClave()//metodo que se utiliza para la generacion de las claves primarias
        {
            Negocios.ComponeteNegocios auxCom = new Negocios.ComponeteNegocios();
            Aplicacion.clsControles.clsControles auxGen = new Aplicacion.clsControles.clsControles();
            txtCodigoDE.Text = auxGen.GeneracionClaves("U", auxCom.metContarFilasDepartamento(varConexion,this.coleccionDeDatos1));//Llamado al metodo que genera una clave
            //Metodo que se encuentra en las clases de acceso         
        }

        private void metIniciarSesionDE()
        {
            Negocios.ComponeteNegocios auxCom = new Negocios.ComponeteNegocios();
            auxCom.metIniciarSesionDEPA(varConexion, this.coleccionDeDatos1);
        }

        private void btnCentroUnidadesDE_Click(object sender, EventArgs e)
        {
            Formularios.frmEmpresa auxFrm = new frmEmpresa(varConexion);
            auxFrm.ShowDialog();//Llamado al formulario donde se encuentra los ingreso de centro de costos
            //this.coleccionDeDatos1.vs_MostrarCentrosCostos.Clear();//Actulizar coleccion de datos(dataSet)
            metActualizar();

        }

        private void metActualizar()
        {
            Negocios.ComponeteNegocios auxCom = new Negocios.ComponeteNegocios();
            auxCom.metActualizarCentroCostos(varConexion, this.coleccionDeDatos1);
        }

        private void textNombreDE_KeyDown(object sender, KeyEventArgs e)
        { 
            //Reconoce si se preciono enter      
            if (e.KeyCode == Keys.Enter)
                txtRepresentanteDE.Focus();
        }

        private void textRepresentanteDE_KeyDown(object sender, KeyEventArgs e)
        {
            //Reconoce si se preciono enter 
            if (e.KeyCode == Keys.Enter)
                txtTelefonoDE.Focus();
        }

        private void textTelefonoDE_KeyDown(object sender, KeyEventArgs e)
        {
            //Reconoce si se preciono enter 
            if (e.KeyCode == Keys.Enter)
                txtUbicacionDE.Focus();
        }

        private void comNombreCentroDE_KeyDown(object sender, KeyEventArgs e)
        {
            //Reconoce si se preciono enter 
            if (e.KeyCode == Keys.Enter)
                txtNombreDE.Focus();
        }

        private void metAceptar()
        {
            //Si se valida correctamente los datos de los casilleros(texbox,combobox) este
            //metodo activa o desactiva el boton de nuevo ingreso
            if (metEstaVacio(txtNombreDE,4) == false && metEstaVacio(txtRepresentanteDE,4) == false && metEstaVacio(txtTelefonoDE,8) == false && metEstaVacio(txtUbicacionDE,3) == false)
                btnGuardarDe.Enabled = true;/////Activar
            else
                btnGuardarDe.Enabled = false;////desactivar
        }

        private bool metEstaVacio(TextBox tex, int k)
        {
            //metodo que verifica si esta vacio algun casillero de texto
            bool auxVar = true;
            if (tex.Text.Length >= k)
                auxVar = false;
            else
                auxVar = true;
            return auxVar;

        }

        private void textUbicacionDE_KeyPress(object sender, KeyPressEventArgs e)
        {
            //Controlar el ingreso de espacios en la apliacion
            Aplicacion.clsControles.clsControles auxFrm = new Aplicacion.clsControles.clsControles();
            varBandera = auxFrm.metControlarEspacios(e, varBandera);//Controla que el ingreso sea de numeros o de letras
            varBandera = auxFrm.metPrecionarEspacio(e, varBandera);//Control de espacios para que ingresen mas de un espacio
        }

        private void textRepresentanteDE_KeyPress(object sender, KeyPressEventArgs e)
        {
            metSoloLetrasVal(e);//Llamado al metodo de control de solo letras
        }

        private void textTelefonoDE_KeyPress(object sender, KeyPressEventArgs e)
        {
            Aplicacion.clsControles.clsControles auxFrm = new Aplicacion.clsControles.clsControles();
            varBandera = auxFrm.metSoloNumeros(e, varBandera);//Controla que solo ingrese numeros
        }

        private void textNombreDE_KeyPress(object sender, KeyPressEventArgs e)
        {
            metSoloLetrasVal(e);//Llamado al metodo de control de solo letras
        }

        private void metSoloLetrasVal(KeyPressEventArgs e)
        {
            Aplicacion.clsControles.clsControles auxFrm = new Aplicacion.clsControles.clsControles();
            varBandera = auxFrm.metSoloLetras(e, varBandera);//controla que solo ingrese letras
            varBandera = auxFrm.metPrecionarEspacio(e, varBandera);//Controla el ingreso de espacios
            //Estos metodo se encuentran en la clase de acceso locales
            metAceptar();//Llama a la validacion de los datos para activar el boton de nuevo ingreso
       
        }

        private void comNombreCentroDE_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = true;//Impide que se escriba en los combo box
        }

        private void btnNuevoDe_Click(object sender, EventArgs e)
        {
            btnNuevoDe.Enabled = false;//desactiva el boton de nuevo ingreso
            metLimpiar();//Limpia los datos exixtentes para ingresar los datos nuevos
            metGenerarClave();//llama a generar una nueva clave
            grpUnidadesDe.Enabled = true;
        }

        private void comNombreCentroDE_KeyUp(object sender, KeyEventArgs e)
        {
            metAceptar();//Control de los casilleros vacios(textbox)
        }

        private void toolModificarDepartamento_Click(object sender, EventArgs e)
        {
            //Llamado al formulario par modificar las unidades
            Aplicacion.Formularios.frmModificarUnidades auxFrm = new frmModificarUnidades(varConexion);
            auxFrm.ShowDialog();
        }
                 
    }
}
